# 统一请求封装
import json
import logging

import requests

from config import setting

# 生成日志对象
logger = logging.getLogger(__name__)

class RequestUtil:
    sess= requests.session()     #必须是同一个session回话

    def send_all_request(self,**kwargs):        # **kwargs表示接受任意长度的参数
        # 遍历参数列表  对每种参数类型进行判断处理
        for key,value in kwargs.items():
            if key == "params":     # 参数就加到kwargs的后面
                kwargs["params"].update(setting.global_args)

            elif key == "files":    # 文件路径就打开该文件，然后将文件装进kwargs
                for file_key,file_value in value.items():
                    value[file_key]=open(file_value,"rb" )

        #发送请求
        res = RequestUtil.sess.request(**kwargs)
        # print(res.text)
        # 分别对json和文本格式处理，这样json格式就会使用utf-8编码，阅读性更强
        if "json" in res.headers.get("Content-Type"):
            json_str = json.dumps(res.json(), ensure_ascii=False)
            logger.info(json_str)
        else:
            logger.info(res.text)
        return res          # 返回响应结果